Tree Store এবং Nested Data ব্যবহার করা

Web Development - এক্সটিজেএস (ExtJS) - ExtJS Tree Panel এবং Nested Data Structures |

ExtJS এ Tree Store এবং Nested Data ব্যবহার করে আপনি একটি ডাইনামিক ট্রি স্ট্রাকচার তৈরি করতে পারেন, যেখানে ডেটা হায়ারার্কিক্যাল (উপর-নিচ) আকারে উপস্থাপিত হয়। এটি সাধারণত ফাইল সিস্টেম, ক্যাটেগরি বা অন্যান্য হায়ারার্কিক্যাল ডেটার জন্য ব্যবহৃত হয়। Tree Store ডেটাকে পরিচালনা করতে ব্যবহৃত হয়, এবং এটি ModelProxy এর মাধ্যমে ডেটা লোড ও ম্যানেজ করতে সহায়ক।

এই গাইডে আমরা Tree Store তৈরি এবং Nested Data লোড করার পদ্ধতি দেখবো।


১. Tree Store এর সংজ্ঞা

Tree Store ExtJS এ একটি স্টোর যা tree data structure কে ম্যানেজ করে। এটি parent-child relationships সহ ডেটা লোড এবং ম্যানেজ করার জন্য ব্যবহৃত হয়।

Tree Store উদাহরণ:

Ext.define('MyApp.store.TreeStore', {
    extend: 'Ext.data.TreeStore',
    model: 'MyApp.model.TreeNode', // মডেলটি TreeNode
    proxy: {
        type: 'memory',  // মেমরি প্রক্সি, ডেটা সরাসরি কোডে লোড হবে
        reader: {
            type: 'json', // JSON ফরম্যাটে ডেটা রিড
            rootProperty: 'children' // JSON ডেটার মূল অংশ
        }
    },
    root: {
        text: 'Root',  // রুট নোডের টেক্সট
        expanded: true, // রুট নোডটি এক্সপ্যান্ডেড থাকবে
        children: [
            { text: 'Child 1', leaf: true },
            { text: 'Child 2', leaf: true },
            { text: 'Child 3', expanded: true, children: [
                { text: 'Grandchild 1', leaf: true },
                { text: 'Grandchild 2', leaf: true }
            ]}
        ]
    }
});
  • extend: 'Ext.data.TreeStore': এটি TreeStore কে প্রসারিত (extend) করে।
  • proxy: { type: 'memory' }: এখানে memory প্রক্সি ব্যবহার করা হয়েছে, যেটি ডেটা সরাসরি কোডে লোড করবে (এটি অস্থায়ী ডেটা স্টোরেজের মতো কাজ করবে)।
  • root: রুট নোড এবং এর উপরের children। এখানে প্রতিটি নোডের জন্য টেক্সট, এক্সপ্যান্ডেড অবস্থা, এবং তার সন্তান (children) নির্ধারণ করা হয়েছে।

২. Model তৈরি করা (TreeNode Model)

TreeStore ব্যবহার করার জন্য একটি Model তৈরি করতে হবে, যা প্রতিটি নোডের ডেটা নির্ধারণ করবে।

TreeNode Model উদাহরণ:

Ext.define('MyApp.model.TreeNode', {
    extend: 'Ext.data.Model',
    fields: [
        { name: 'text', type: 'string' },   // নোডের টেক্সট
        { name: 'leaf', type: 'boolean' },  // যদি নোডটি লিফ (leaf) হয়
        { name: 'expanded', type: 'boolean' } // এক্সপ্যান্ডেড নোড
    ]
});
  • text: নোডের টেক্সট।
  • leaf: এটি নিশ্চিত করে যে নোডটি একটি পাতার (leaf) নোড কিনা।
  • expanded: এটি নির্দেশ করে যে নোডটি ডিফল্টভাবে এক্সপ্যান্ডেড থাকবে কি না।

৩. TreePanel তৈরি করা

ট্রি ডেটা প্রদর্শনের জন্য TreePanel কম্পোনেন্ট ব্যবহার করা হয়। এটি Tree Store এর সাথে যুক্ত হয়ে ডেটা দেখানোর কাজ করে।

TreePanel উদাহরণ:

Ext.create('Ext.tree.Panel', {
    title: 'Tree Example',
    width: 400,
    height: 300,
    store: {
        type: 'tree', // স্টোর টাইপ 'tree' হবে
        model: 'MyApp.model.TreeNode', // এই মডেলটি ব্যবহার করা হবে
        root: {
            text: 'Root',
            expanded: true,
            children: [
                { text: 'Node 1', leaf: true },
                { text: 'Node 2', expanded: true, children: [
                    { text: 'Child 1', leaf: true },
                    { text: 'Child 2', leaf: true }
                ]}
            ]
        }
    },
    rootVisible: false, // রুট নোডটি ভিজিবল হবে না
    renderTo: Ext.getBody()
});

এখানে:

  • store: এটি TreeStore ব্যবহার করছে, যার মধ্যে রুট এবং তার সন্তান (children) অন্তর্ভুক্ত।
  • rootVisible: false: রুট নোডটি UI তে প্রদর্শন হবে না, শুধুমাত্র তার সন্তানেরা (children) দেখানো হবে।

৪. Nested Data (Nested JSON Data) ব্যবহার করা

প্রকৃত জীবনে, ট্রি ডেটা সাধারণত nested JSON ফরম্যাটে আসে। আপনি যদি সার্ভার থেকে ডেটা নিয়ে আসেন, তাহলে এটি JSON ফরম্যাটে থাকে যা parent-child relationship দেখায়।

Nested Data (JSON) উদাহরণ:

{
  "text": "Root",
  "expanded": true,
  "children": [
    { "text": "Node 1", "leaf": true },
    { "text": "Node 2", "expanded": true, "children": [
        { "text": "Child 1", "leaf": true },
        { "text": "Child 2", "leaf": true }
    ]}
  ]
}

JSON Data লোড করার জন্য TreeStore উদাহরণ:

Ext.define('MyApp.store.TreeStore', {
    extend: 'Ext.data.TreeStore',
    model: 'MyApp.model.TreeNode',
    proxy: {
        type: 'ajax',  // AJAX মাধ্যমে সার্ভার থেকে ডেটা ফেচ
        url: '/treeData', // সার্ভার থেকে JSON ডেটা লোড করার URL
        reader: {
            type: 'json',
            rootProperty: 'children' // JSON ডেটায় children কে রুট হিসেবে ব্যবহার
        }
    },
    root: {
        text: 'Root',
        expanded: true
    }
});

এখানে:

  • type: 'ajax': AJAX পদ্ধতি ব্যবহার করে ডেটা লোড করা হচ্ছে।
  • url: '/treeData': সার্ভার থেকে ডেটা ফেচ করার URL।
  • reader: JSON ডেটা থেকে children অংশ রিড করার জন্য rootProperty কনফিগার করা হয়েছে।

৫. Tree Store এর মাধ্যমে CRUD অপারেশন

ExtJS এর TreeStore ব্যবহার করে CRUD (Create, Read, Update, Delete) অপারেশন করা যায়।

নতুন নোড যোগ করা:

var store = Ext.getStore('MyApp.store.TreeStore');
store.getRoot().appendChild({
    text: 'New Node',
    leaf: true
});

নোড আপডেট করা:

var node = store.getNodeById('nodeId');
node.set('text', 'Updated Node');

নোড মুছে ফেলা:

var node = store.getNodeById('nodeId');
node.remove();

সারাংশ

  1. Tree Store: ExtJS তে TreeStore ব্যবহার করে ডেটার হায়ারার্কিক্যাল স্ট্রাকচার ম্যানেজ করা যায়।
  2. Model: TreeStore এর জন্য একটি মডেল তৈরি করতে হয় যা প্রতিটি নোডের ডেটা নির্ধারণ করে।
  3. TreePanel: TreeStore থেকে ডেটা লোড করে TreePanel কম্পোনেন্টের মাধ্যমে উপস্থাপন করা হয়।
  4. Nested Data: JSON ডেটার parent-child সম্পর্ক বিশ্লেষণ করে ট্রি স্ট্রাকচার তৈরি করা হয়।
  5. CRUD: TreeStore এর মাধ্যমে আপনি ট্রি ডেটায় CRUD অপারেশন যেমন Create, Read, Update, এবং Delete কার্যক্রম করতে পারবেন।

এই পদ্ধতিগুলির মাধ্যমে আপনি খুব সহজে ডাইনামিক, ইন্টারেক্টিভ এবং হায়ারার্কিক্যাল ডেটা ডিসপ্লে করতে পারবেন।

Content added By
Promotion